# coding=utf-8

__author__ = 'Arthur Fortes'

from django.db import models
from empresas.models import Empresa
from produtos.models import Produto
from decimal import Decimal

class Revenda(models.Model):
    codigo = models.CharField('Número da Nota', max_length=100)
    valortotalnota = models.DecimalField('Valor total', blank=True, null=True, max_digits=10,decimal_places=2,default=0.0, editable=False)
    datacompra = models.DateField('Data da Compra')
    vendedor = models.ForeignKey(Empresa)
    dataentrada = models.DateTimeField('Entrada no Sistema',auto_now_add=True, blank=True, null=True)
    totaldeitens = models.IntegerField('Total de Itens', blank=True, null=True,default=0, editable=False)
    notas = models.FileField('Recibo', upload_to='Notas',blank=True,null=True)
    observacao = models.TextField('Observação', blank=True, null=True)

class Meta:
    verbose_name_plural = 'Revenda'
    verbose_name = 'Revenda'

def __unicode__(self):
    return self.codigo

class CompraProdutoVendedor(models.Model):
    revenda = models.ForeignKey(Revenda, verbose_name='Número da Nota')
    produtofornecedor = models.ForeignKey(Produto, verbose_name='Produto',unique=True)
    quantidade = models.IntegerField('Quantidade')
    qtddisp = models.IntegerField('Quantidade disponível', blank=True, null=True,default=0)
    valorunitario = models.DecimalField('Valor Unitário', max_digits=10,decimal_places=2, blank=True, null=True,default=0)
    valortotal = models.DecimalField('Valor total', blank=True, null=True, max_digits=10,decimal_places=2, default=0.0)
    datacompra = models.DateTimeField('Data da Compra',auto_now_add=True, blank=True, null=True)
    valor = models.DecimalField('Valor Sugerido', blank=True, null=True, max_digits=10,decimal_places=2)
    fornecedor = models.ForeignKey(Empresa, blank=True, null=True)


    class Meta:
        verbose_name_plural = 'Itens para Revenda'
        verbose_name = 'Item'


    def __init__(self, *args, **kwargs):
        super(CompraProdutoVendedor, self).__init__(*args, **kwargs)
        self.qtdloja = None

    def save(self):

        if self.quantidade != 0:
            l = Decimal(0.01)
            produto = Produto.objects.get(id =self.produtofornecedor.id)
            revenda = Revenda.objects.get(id = self.revenda.id)
            msg = u"Este campo é obrigatório."


            forn = Empresa.objects.get(id = self.revenda.vendedor.id)

            self.valortotal = self.quantidade * (self.produtofornecedor.valor+self.produtofornecedor.valor*forn.tabelaprecovenda*l)
            self.valortotal = self.valorunitario*self.quantidade

            self.valor = self.produtofornecedor.valor+(self.produtofornecedor.valor*forn.tabelaprecovenda*l)

            if revenda.totaldeitens > 0:
                try:
                    msg = u"Este campo é obrigatório."
                    obj = CompraProdutoVendedor.objects.get(id = self.id)
                    x = obj.qtdloja
                    y = obj.valortotal
                    k = obj.qtdloja

                    if (produto.qtdloja-self.quantidade) <= 0:
                        self.quantidade = 0
                        self.qtddisp = produto.qtdloja
                    else:
                        produto.qtdloja = (produto.qtdloja - k) - self.quantidade
                        produto.save()
                        revenda.totaldeitens = (revenda.totaldeitens - x) + self.quantidade
                        revenda.valortotalnota = (revenda.valortotalnota -y) + self.valortotal
                        revenda.save()
                        self.qtddisp = produto.qtdloja
                except:
                    if (produto.qtdloja-self.quantidade) <= 0:
                        self.quantidade = 0
                        self.qtddisp = produto.qtdloja
                    else:
                        produto.qtdloja = produto.qtdloja - self.quantidade
                        produto.save()
                        revenda.totaldeitens = revenda.totaldeitens + self.quantidade
                        revenda.valortotalnota = revenda.valortotalnota + self.valortotal
                        revenda.save()
                        self.qtddisp = produto.qtdloja

            if revenda.totaldeitens == 0:
                if (produto.qtdloja-self.quantidade) <= 0:
                    self.quantidade = 0
                    self.qtddisp = produto.qtdloja
                else:
                    produto.qtdloja = produto.qtdloja - self.quantidade
                    produto.save()
                    revenda.totaldeitens = revenda.totaldeitens + self.quantidade
                    revenda.valortotalnota = revenda.valortotalnota + self.valortotal
                    revenda.save()
                    self.qtddisp = produto.qtdloja



        super(CompraProdutoVendedor,self).save()

    def __unicode__(self):
        return self.produtofornecedor.nome